/*
    添加或更新Map元素
    没有的键就是添加，反之是修改
*/
const myMap = new Map();
//将新元素添加到Map
myMap.set("name", "lufei");
myMap.set("price", 10000);
console.log("添加后的map为", myMap);

//在Map对象中更新某个元素
myMap.set("price", 50000);
console.log("更新后的map为", myMap);

//链式调用
myMap.set(1, "suolong").set(2, "namei");
console.log("链式调用后的map为", myMap);

/*
    has(key)
    Map是否含有该键
*/
console.log("myMap是否含有键age", myMap.has("age"));
console.log("myMap是否含有键price", myMap.has("price"));

/*
    get(key)
    根据键获取值，如果没有该键则为undefined
*/
let val = myMap.get("price");
console.log("price对应的值为", val);

/*
    map实例.forEach(回调函数，thisArg)
*/
function logMapElements(value, key, map) {
  console.log(`map的键('${key}')，对应值为${value}`);
}

new Map([
  ["foo", 3],
  ["bar", {}],
  ["baz", undefined],
]).forEach(logMapElements);

/*
    Map实例.delete(key)
    从map中删除指定键，
    如果键存在则删除并返回true
    反之返回false
*/
myMap.delete(2);
console.log("删除元素后的map为", myMap);

/*
    Map实例.clear()
    清空map
*/
console.log("当前map的值为", myMap);
console.log("当前map的元素数量", myMap.size);

myMap.clear();

console.log("清空后map的值为", myMap);
console.log("清空后map的元素数量", myMap.size);
